#include "TreeItem.h"
#include <QDebug>

TreeItem::TreeItem(const QString& _qstrId, TreeItem* parentItem)
	: m_qstrId(_qstrId)
    , m_parentItem(parentItem)
{

}

TreeItem::TreeItem(const QString& _qstrId, const QVariant& data, TreeItem* parentItem)
	: m_qstrId(_qstrId)
	, m_data(data)
	, m_parentItem(parentItem)
{

}

TreeItem::TreeItem(int level, const QVariant& data, TreeItem* parentItem)
    : m_parentItem(parentItem), m_level(level), m_data(data)
{

}

TreeItem::~TreeItem()
{
    qDeleteAll(m_childItems);
}

void TreeItem::appendChild(TreeItem* child)
{
    m_childItems.append(child);
}

void TreeItem::removeChilds()
{
    qDeleteAll(m_childItems);
    m_childItems.clear();
}

TreeItem* TreeItem::child(int row)
{
    return m_childItems.value(row);
}

TreeItem* TreeItem::parentItem()
{
    return m_parentItem;
}

int TreeItem::childCount() const
{
    return m_childItems.count();
}

int TreeItem::row() const
{
    if (m_parentItem)
    {
        return m_parentItem->m_childItems.indexOf(const_cast<TreeItem*>(this));
    }
    return 0;
}

void TreeItem::setData(const QVariant& data)
{
    m_data = data;
}

QVariant TreeItem::data() const
{
    return m_data;
}

void TreeItem::setLevel(int level)
{
    m_level = level;
}

int TreeItem::level() const
{
    return m_level;
}
